home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / libs / 3dvect39 / vars2.inc < prev    next >
Text File  |  1994-10-30  |  17KB  |  399 lines

  1. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2. ;
  3. ; Filename     : vars2.inc
  4. ; Included from: 3D2.ASM
  5. ; Description  : Defined Variables for 3D2.ASM
  6. ;
  7. ; Written by: John McCarthy
  8. ;             1316 Redwood Lane
  9. ;             Pickering, Ontario.
  10. ;             Canada, Earth, Milky Way (for those out-of-towners)
  11. ;             L1X 1C5
  12. ;
  13. ; Internet/Usenet:  BRIAN.MCCARTHY@CANREM.COM
  14. ;         Fidonet:  Brian McCarthy 1:229/15
  15. ;   RIME/Relaynet: ->CRS
  16. ;
  17. ; Home phone, (905) 831-1944, don't call at 2 am eh!
  18. ;
  19. ; John Mccarthy would really love to work for a company programming Robots
  20. ; or doing some high intensive CPU work.  Hint. Hint.
  21. ;
  22. ; Send me your protected mode source code!
  23. ; Send me your Objects!
  24. ; But most of all, Send me a postcard!!!!
  25. ;
  26. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  27.  
  28.                    align 4
  29.  
  30. ; table of current limitations/restraints - to be used as reference by  user
  31. ; at run-time to determine if object code has been assembled with ample room
  32. ; for data/variables/point/surfaces etc...
  33.  
  34. _asm_version       dw 38h
  35. _asm_maxpoints     dw maxpoints
  36. _asm_maxsurfaces   dw maxsurfaces
  37. _asm_maxpolys      dw maxpolys
  38. _asm_maxobjects    dw maxobjects
  39. _asm_number_spaces dw number_of_spaces
  40. _asm_xsize         dw xmax-xmin
  41. _asm_ysize         dw ymax-ymin
  42. _asm_usez          dw usez
  43. _asm_cameraobject  dw cameraobject
  44. _asm_xmode         dw xmode
  45. _asm_ratiox        dw ratiox
  46. _asm_ratioy        dw ratioy
  47. _asm_xactual       dw xactual
  48. _asm_yactual       dw yactual
  49. _asm_pages         dw pages
  50. _asm_shapes        dw numberofshapes
  51. _asm_bitmaps       dw numberofbitmaps
  52. _asm_xpals         dw numberofpals
  53. _asm_div256        dw div_256
  54.  
  55.                    align 4
  56.  
  57. _objbase           dd numberofshapes dup (0) ; memory locations of shapes (offsets)
  58. _bitbase           dd numberofbitmaps dup (0) ; memory locations of _bitmaps
  59. _bitx              dd numberofbitmaps dup (0) ; x base size of _bitmaps (for 3d)
  60. _bity              dd numberofbitmaps dup (0) ; y base size of _bitmaps
  61. _xreftable         dd numberofpals dup (o _nullpalette) ; offsets to palette cross referance tables
  62. _stonetbl          dd numberofstones dup (0) ; offsets to stones textures
  63. _stoneadd          db numberofstones dup (0) ; colour addition value for stone textures (0,16,32,...)
  64.  
  65. _x1                dw ?                     ; points for line draw
  66. _y1                dw ?
  67. _x2                dw ?
  68. _y2                dw ?
  69. rise               dw ?                     ; counter for draw loop
  70. xp                 dd maxpoints dup (?)     ; points breakdown, after _rotate_pointd, 2d,
  71. yp                 dd maxpoints dup (?)     ; x,y points after 3d, are actual location.
  72. zp                 dd maxpoints dup (?)     ; z useless, only good during sort of sides
  73. sides              dw maxsurfaces*maxpolys dup (?) ; visible sides only here (clockwize)
  74. order              dd maxsurfaces dup (?)   ; what order to draw surfaces in.
  75. zeds               dd maxsurfaces dup (?)   ; z values of first point in side, for sort
  76. surfcolors         dw maxsurfaces dup (?)   ; colours for those sides, high and low
  77. colors12           dd 0                     ; colours for sides 1&2
  78. textures           dw maxsurfaces dup (?)   ; commands/textures for sides
  79. texture12          dd 0                     ; textures for sides 1&2
  80. command            dd 0                     ; current command in load_surfaces loop
  81. _showing           dd 0                     ; how many visible sides (total)
  82. pointindex         dd 0                     ; indexer to points, v_xs[],v_ys[],v_zs[]
  83. lindex             dd ?                     ; last indexer to points,
  84. offsides           dd offset sides          ; gets inc'd when object plotted
  85. numsides           dd ?                     ; number of sides total, gets trashed
  86. numpoints          dd ?                     ; number of points, gets trashed
  87. whichside          dd ?                     ; which side am i doing now
  88.                    dw 0                     ; reserved - leave blank
  89.                    tbsize = ymax-ymin
  90.                    if tbsize lt xmax-xmin
  91.                    tbsize = xmax-xmin
  92.                    endif
  93. _poly_firstbyte    dw tbsize dup(1000)      ; table of start and end x points
  94.                    dw 1000                  ; end flag, permanent
  95.                    dw 0                     ; reserved - leave blank
  96. _poly_lastbyte     dw tbsize dup(-1000)
  97. _poly_oney         dd 1000                  ; y start for one polygon draw
  98. leftmost           dw 1000                  ; only used for _fakeline_vert routine
  99. _colq              db ?                     ; colour of this side
  100. lamflag            db ?                     ; is lambert matrix set up for this object?
  101.                    align 4
  102. currobj            dd ?                     ; current object number (for shading)
  103. xad                dd ?                     ; 3d offset of object
  104. yad                dd ?
  105. zad                dd ?
  106. vxcos              dd ?
  107. vxsin              dd ?
  108. vycos              dd ?
  109. vysin              dd ?
  110. vzcos              dd ?
  111. vzsin              dd ?
  112. palxrefx           dd ?                     ; temp xreferance holder
  113. steel              db ?                     ; steel flag, -1 = don't use
  114. steelc             db ?                     ; base colour for steel, taken from _colq
  115. polytype           dd ?                     ; offset for polytype (_fakeline_horz)
  116. minzc              dd ?                     ; minz (for each object)
  117. btolr              dd ?                     ; tolerance (for each object)
  118. fex                dw ?
  119. lastshade          db ?                     ; shade intensity from last calculation
  120.  
  121. ; variables for multiple object routine, you modify these!
  122.  
  123.                    align 4
  124. v_whatshape        dw maxobjects+1 dup (0)  ; shapes of objects or bitmaps (0,1,2...)
  125. v_bitobjx          dw maxobjects+1 dup (0)  ; bitmap additional scaling x
  126. v_bitobjy          dw maxobjects+1 dup (0)  ; bitmap additional scaling y
  127. v_xs               dd maxobjects+1 dup (0)  ; locations of objects
  128. v_ys               dd maxobjects+1 dup (0)
  129. v_zs               dd maxobjects+1 dup (0)
  130. v_vxs              dw maxobjects+1 dup (0)  ; angles of objects
  131. v_vys              dw maxobjects+1 dup (0)
  132. v_vzs              dw maxobjects+1 dup (0)
  133. v_palxref          db maxobjects+1 dup (0)  ; palette cross reference for each object
  134. v_userotate        db maxobjects+1 dup (0)  ; rotation type,0 = full,1 = camera
  135. v_onoff            db maxobjects+1 dup (0)  ; is object on/off
  136.                    dd 0                     ; buffer, leave this here dragon breath!
  137.                    align 4
  138.  
  139. _whatshape         dw maxobjects+1 dup (0)  ; shapes of objects or bitmaps (0,1,2...)
  140. _bitobjx           dw maxobjects+1 dup (0)  ; bitmap additional scaling x
  141. _bitobjy           dw maxobjects+1 dup (0)  ; bitmap additional scaling y
  142. _xs                dd maxobjects+1 dup (0)  ; locations of objects
  143. _ys                dd maxobjects+1 dup (0)
  144. _zs                dd maxobjects+1 dup (0)
  145. _vxs               dw maxobjects+1 dup (0)  ; angles of objects
  146. _vys               dw maxobjects+1 dup (0)
  147. _vzs               dw maxobjects+1 dup (0)
  148. _palxref           db maxobjects+1 dup (0)  ; palette cross reference for each object
  149. _userotate         db maxobjects+1 dup (0)  ; rotation type,0 = full,1 = camera
  150. _onoff             db maxobjects+1 dup (0)  ; is object on/off
  151.                    align 4
  152.  
  153. _xadds             dd maxobjects+1 dup (0)  ; linear velocities of objects
  154. _yadds             dd maxobjects+1 dup (0)
  155. _zadds             dd maxobjects+1 dup (0)
  156. _vxadds            dw maxobjects+1 dup (0)  ; anglular velocities
  157. _vyadds            dw maxobjects+1 dup (0)
  158. _vzadds            dw maxobjects+1 dup (0)
  159. _lcount            dw maxobjects+1 dup (0)  ; linear counter
  160. _acountx           dw maxobjects+1 dup (0)  ; angular counters
  161. _acounty           dw maxobjects+1 dup (0)
  162. _acountz           dw maxobjects+1 dup (0)
  163.  
  164. ;
  165. ;
  166. ;
  167. ;
  168. ;
  169. ;
  170.  
  171. ; flags to disable/enable routines: disable = -1, enable >=0
  172.  
  173. _cam_follow        dd no                    ; what object are we following, -1 = none
  174. _cam_wherelook     dd no                    ; what object do we force camera to look at
  175.  
  176. _cam_oldspeed      dd ?                     ; how fast to move, temp counter
  177.  
  178. ; camera variables = was last object in object list, now is zero'th
  179.  
  180. eyex               equ d [v_xs+cameraobject*4] ; camera location (actual, dont modify)
  181. eyey               equ d [v_ys+cameraobject*4]
  182. eyez               equ d [v_zs+cameraobject*4]
  183. eyeax              equ w [v_vxs+cameraobject*2] ; angles for camera
  184. eyeay              equ w [v_vys+cameraobject*2]
  185. eyeaz              equ w [v_vzs+cameraobject*2]
  186.  
  187. _eyex              equ d [_xs+cameraobject*4] ; camera location (virtual, modify these!)
  188. _eyey              equ d [_ys+cameraobject*4]
  189. _eyez              equ d [_zs+cameraobject*4]
  190. _eyeax             equ w [_vxs+cameraobject*2] ; angles for camera
  191. _eyeay             equ w [_vys+cameraobject*2]
  192. _eyeaz             equ w [_vzs+cameraobject*2]
  193.  
  194. _eyexadds          equ d [_xadds+cameraobject*4] ; eye location velocity
  195. _eyeyadds          equ d [_yadds+cameraobject*4]
  196. _eyezadds          equ d [_zadds+cameraobject*4]
  197. _eyevxadds         equ w [_vxadds+cameraobject*2] ; eye angular velocities
  198. _eyevyadds         equ w [_vyadds+cameraobject*2]
  199. _eyevzadds         equ w [_vzadds+cameraobject*2]
  200. _eyelcount         equ w [_lcount+cameraobject*2] ; eye linear count (how many times to move)
  201. _eyeacountx        equ w [_acountx+cameraobject*2] ; eye angular counts
  202. _eyeacounty        equ w [_acounty+cameraobject*2]
  203. _eyeacountz        equ w [_acountz+cameraobject*2]
  204.  
  205.                    align 4
  206.  
  207. _ecosx             dd ?                     ; multipliers of eyeax and eyeaz
  208. _esinx             dd ?                     ; reset at begining of each new frame
  209. _ecosy             dd ?
  210. _esiny             dd ?
  211. _ecosz             dd ?
  212. _esinz             dd ?
  213.  
  214. vcosx              dd ?                     ; temp storage for object matrix calculation
  215. vsinx              dd ?                     ; can be used if needed during draw
  216. vcosy              dd ?
  217. vsiny              dd ?
  218. vcosz              dd ?
  219. vsinz              dd ?
  220.  
  221. _vmatrix           dd 9 dup (?)             ; 3x3 rotation matrix for object (includes eye)
  222. _tmatrix           dd 9 dup (?)             ; 3x3 temp rotation matrix for hierarchys
  223. _ematrix           dd 9 dup (?)             ; 3x3 rotation matrix for eye (32 bit)
  224. _lmatrix           dd 3 dup (?)             ; 1x3 z resultant matrix for _lambert shading
  225.  
  226. _y_angle_of_sun    dd 1500h                 ; where is the sun? for shading
  227.  
  228. ; clipping variables in memory locations, pre-calculated!
  229. ; xactual and yactual basically don't change but clipping can to allow
  230. ; windows (rear view mirror, view airplanes menu, auxilary views, rear gunner)
  231. ;
  232. ; when flipping between windows, also flip _cam_follow, _cam_wherelook
  233. ; _cam_oldspeed, _clr_lxupdate, _clr_lyupdate, camera variables/angles/speeds (obviously).
  234.  
  235. _cliplt            dw _xcenter+xmin         ; _xcenter+xmin
  236. _cliprt            dw _xcenter+xmax-1       ; _xcenter+xmax-1
  237. _cliptp            dw _ycenter+ymin         ; _ycenter+ymin
  238. _clipbt            dw _ycenter+ymax-1       ; _ycenter+ymax-1
  239.  
  240. _xcent             dw _xcenter
  241. _ycent             dw _ycenter
  242. _ycents1           dw _ycenter-1
  243. _ycentp1           dw _ycenter+1
  244.  
  245. xmaxxcent          dw xmax+_xcenter
  246.  
  247. ymaxycent         dw ymax+_ycenter
  248.  
  249. _xmins             dw xmin
  250. _xmins1            dw xmin-1
  251. _xmaxs             dw xmax
  252. _xmaxs1            dw xmax-1
  253.  
  254. _ymins             dw ymin
  255. _ymins1            dw ymin-1
  256. _ymaxs             dw ymax
  257. _ymaxs1            dw ymax-1
  258.  
  259. xmit               dd xmin-tolerance        ; tolerance is max object size/ratio
  260. xmat               dd xmax+tolerance
  261. ymit               dd ymin-tolerance
  262. ymat               dd ymax+tolerance
  263.  
  264. ; routines for screen stretching
  265.  
  266. _make3d            dd offset _user3d        ; calculate 3d ?actual*?/z (both x and y)
  267. _make3dx           dd offset _user3dx       ; xactual*x/z
  268. _make3dy           dd offset _user3dy       ; yactual*y/z
  269.  
  270. ; variables for icon scale routine
  271.  
  272. _bitmap            dd ?
  273. _scale_destwidth   dw ?
  274. _scale_destheight  dw ?
  275. _scale_destx       dw ?
  276. _scale_desty       dw ?
  277.  
  278. sourcewidth        dw ?                     ; workspace for icon scale routine
  279. sourceheight       dw ?
  280. decisionx          dw ?
  281. decisiony          dw ?
  282. clippedwidth       dw ?
  283. clippedheight      dw ?
  284.  
  285.                    public _objbase
  286.                    public _bitbase
  287.                    public _bitx
  288.                    public _bity
  289.                    public _xreftable
  290.                    public _stonetbl
  291.                    public _stoneadd
  292.  
  293.                    public _xs
  294.                    public _ys
  295.                    public _zs
  296.                    public _xadds
  297.                    public _yadds
  298.                    public _zadds
  299.                    public _vxs
  300.                    public _vys
  301.                    public _vzs
  302.                    public _vxadds
  303.                    public _vyadds
  304.                    public _vzadds
  305.                    public _lcount
  306.                    public _acountx
  307.                    public _acounty
  308.                    public _acountz
  309.                    public _whatshape
  310.                    public _palxref
  311.                    public _userotate
  312.                    public _bitobjx
  313.                    public _bitobjy
  314.  
  315.                    public _eyex
  316.                    public _eyey
  317.                    public _eyez
  318.                    public _eyeax
  319.                    public _eyeay
  320.                    public _eyeaz
  321.                    public _eyexadds
  322.                    public _eyeyadds
  323.                    public _eyezadds
  324.                    public _eyevxadds
  325.                    public _eyevyadds
  326.                    public _eyevzadds
  327.                    public _eyelcount
  328.                    public _eyeacountx
  329.                    public _eyeacounty
  330.                    public _eyeacountz
  331.  
  332.                    public _onoff
  333.  
  334.                    public _vmatrix
  335.                    public _tmatrix
  336.                    public _ematrix
  337.                    public _lmatrix
  338.                    public _y_angle_of_sun
  339.                    public _ecosx
  340.                    public _esinx
  341.                    public _ecosy
  342.                    public _esiny
  343.                    public _ecosz
  344.                    public _esinz
  345.  
  346.                    public _bitmap
  347.                    public _scale_destwidth
  348.                    public _scale_destheight
  349.                    public _scale_destx
  350.                    public _scale_desty
  351.  
  352.                    public _x1
  353.                    public _y1
  354.                    public _x2
  355.                    public _y2
  356.                    public _colq
  357.  
  358.                    public _poly_oney
  359.                    public _poly_firstbyte
  360.                    public _poly_lastbyte
  361.                    public _showing
  362.  
  363.                    public _cliplt
  364.                    public _cliprt
  365.                    public _cliptp
  366.                    public _clipbt
  367.                    public _xcent
  368.                    public _ycent
  369.                    public _xmins
  370.                    public _xmins1
  371.                    public _xmaxs
  372.                    public _xmaxs1
  373.                    public _ymins
  374.                    public _ymins1
  375.                    public _ymaxs
  376.                    public _ymaxs1
  377.  
  378.                    public _make3d
  379.                    public _make3dx
  380.                    public _make3dy
  381.  
  382.                    public _asm_version
  383.                    public _asm_maxpoints
  384.                    public _asm_maxsurfaces
  385.                    public _asm_maxpolys
  386.                    public _asm_maxobjects
  387.                    public _asm_number_spaces
  388.                    public _asm_xsize
  389.                    public _asm_ysize
  390.                    public _asm_usez
  391.                    public _asm_cameraobject
  392.                    public _asm_xmode
  393.                    public _asm_ratiox
  394.                    public _asm_ratioy
  395.                    public _asm_xactual
  396.                    public _asm_yactual
  397.                    public _asm_pages
  398.  
  399.